package com.joysuch.wwyt.bp.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.joysuch.wwyt.api.dataaccess.bean.OrientationV3AlarmBean;
import com.joysuch.wwyt.bp.entity.AlarmMessage;
import com.joysuch.wwyt.bp.entity.bean.AlarmMeaasgeSearchBean;
import com.joysuch.wwyt.core.bean.SimpleListIntegerBean;
import com.joysuch.wwyt.monitoringcenter.bean.AlarmMessageCountBean;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author zr
 * @since 2021-12-09
 */
public interface AlarmMessageMapper extends BaseMapper<AlarmMessage> {

    AlarmMessage selectByRefId(Long refId);

    void setAllMeaageHandled(String msg, String alarmReason, String handleBy, Date handleTime);

    /**
     * 获取同一个摄像头的最新一次报警
     *
     * @param tenentId
     * @param orgCode
     * @param cameraName
     * @return
     */
    AlarmMessage getLastAIAlarmMeaasge(Long tenentId, String orgCode, String cameraName);

    List<AlarmMessage> getLastAIAlarmMessageByCamerName(Long tenentId, String orgCode);

    List<SimpleListIntegerBean> aIAlarmSubType(@Param("alarmType") Integer alarmType);

    Integer findCameraAlarm(String cameraName, Long tenentId, String orgCode);

    List<AlarmMessage> statsForCountInDay(Date startTime, Long tenentId, String orgCode);

    AlarmMessage findByAlarmTypeNameAndSubTypeNameAndemployeeId(@Param("alarmTypeName") String alarmTypeName, @Param("alarmBean") OrientationV3AlarmBean alarmBean);

    List<AlarmMessage> getAlarmTypesNumber(@Param("tenentId") Long tenentId, @Param("orgCode") String orgCode);

    List<AlarmMessage> findAllByAlarmTypeAndStatus(@Param("alarmType")Integer alarmType, @Param("status")int status, @Param("tenentId")Long tenentId, @Param("orgCode")String orgCode);

    Page<AlarmMessage> getAlarmMessagePageData(Page<AlarmMessage> page, AlarmMeaasgeSearchBean search);

    Long getAlarmMessageCount(@Param("search")AlarmMeaasgeSearchBean search);

    List<AlarmMessageCountBean> findCameraAlarms(@Param("names")List<String> names,@Param("tenentId") Long tenentId, @Param("orgCode")String orgCode);

    Integer checkCount(Long tenentId, String orgCode);
}
